﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AcadPos.Entity;
using TrustX.Dados;
using System.Data;
using System.Data.SqlClient;

namespace AcadPos.Data
{
    public class DBAdministrador
    {
        #region Listar Administradores
        public DataTable listarAdministradores(string pNome)
        {
            #region Script
            string SQL = @"SELECT ta.ID_ADMINISTRADOR,
                                   ta.NOME,
                                   ta.CPF,
                                   ta.RG,
                                   ta.ORGAO_EXPEDIDOR_RG,
                                   ta.UF_RG,
                                   ta.DATA_EXPEDICAO_RG,
                                   ta.NACIONALIDADE,
                                   ta.NATURALIDADE,
                                   ta.UF_NATURALIDADE,
                                   ta.GENERO,
                                   ta.ESTADO_CIVIL,
                                   ta.NUMERO_ISS,
                                   ta.NUMERO_PIS,
                                   ta.REGISTRO_PROFISSIONAL,
                                   ta.EMAIL,
                                   ta.DDD_TELEFONE,
                                   ta.TELEFONE,
                                   ta.DDD_CELULAR,
                                   ta.CELULAR,
                                   ta.PAI,
                                   ta.MAE,
                                   ta.CEP,
                                   ta.ENDERECO,
                                   ta.NUMERO,
                                   ta.COMPLEMNETO,
                                   ta.BAIRRO,
                                   ta.UF_ENDERECO,
                                   ta.CIDADE,
                                   ta.ID_BANCO,
                                   ta.AGENCIA,
                                   ta.CONTA,
                                   ta.SITUACAO
                            FROM   TB_ADMINISTRADOR ta
                            WHERE  ta.NOME LIKE  '%' + @NOME + '%' 
                            ORDER BY ta.NOME";
            #endregion
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@NOME", SqlDbType.VarChar, pNome);
            return db.GetDataTable();
        }
        #endregion

        #region Inserir Administrador
        public bool inserirAdministrador(Administrador admin, string usuario)
        {
            #region Script
            string SQL = @"INSERT INTO TB_ADMINISTRADOR
                          (
                            NOME,
                            CPF,
                            RG,
                            ORGAO_EXPEDIDOR_RG,
                            UF_RG,
                            DATA_EXPEDICAO_RG,
                            NACIONALIDADE,
                            NATURALIDADE,
                            UF_NATURALIDADE,
                            GENERO,
                            ESTADO_CIVIL,
                            NUMERO_ISS,
                            NUMERO_PIS,
                            REGISTRO_PROFISSIONAL,
                            EMAIL,
                            DDD_TELEFONE,
                            TELEFONE,
                            DDD_CELULAR,
                            CELULAR,
                            PAI,
                            MAE,
                            CEP,
                            ENDERECO,
                            NUMERO,
                            COMPLEMNETO,
                            BAIRRO,
                            UF_ENDERECO,
                            CIDADE,
                            ID_BANCO,
                            AGENCIA,
                            CONTA,
                            SITUACAO,
                            DATA_CADASTRO
                          )
                        VALUES
                          (
                            @NOME,
                            @CPF,
                            @RG,
                            @ORGAO_EXPEDIDOR_RG,
                            @UF_RG,
                            @DATA_EXPEDICAO_RG,
                            @NACIONALIDADE,
                            @NATURALIDADE,
                            @UF_NATURALIDADE,
                            @GENERO,
                            @ESTADO_CIVIL,
                            @NUMERO_ISS,
                            @NUMERO_PIS,
                            @REGISTRO_PROFISSIONAL,
                            @EMAIL,
                            @DDD_TELEFONE,
                            @TELEFONE,
                            @DDD_CELULAR,
                            @CELULAR,
                            @PAI,
                            @MAE,
                            @CEP,
                            @ENDERECO,
                            @NUMERO,
                            @COMPLEMNETO,
                            @BAIRRO,
                            @UF_ENDERECO,
                            @CIDADE,
                            @ID_BANCO,
                            @AGENCIA,
                            @CONTA,
                            @SITUACAO,
                            GETDATE()
                          )";
            #endregion
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@NOME", SqlDbType.VarChar, admin.Nome);
            db.AddParam("@CPF", SqlDbType.VarChar, admin.Cpf);
            db.AddParam("@RG", SqlDbType.VarChar, admin.Rg);
            db.AddParam("@ORGAO_EXPEDIDOR_RG", SqlDbType.VarChar, admin.OrgaoExpedidor);
            db.AddParam("@UF_RG", SqlDbType.VarChar, admin.UfRG);
            db.AddParam("@DATA_EXPEDICAO_RG", SqlDbType.DateTime, admin.DataExpedicao);
            db.AddParam("@NACIONALIDADE", SqlDbType.VarChar, admin.Nacionalidade);
            db.AddParam("@NATURALIDADE", SqlDbType.VarChar, admin.Naturalidade);
            db.AddParam("@UF_NATURALIDADE", SqlDbType.VarChar, admin.UfNaturalidade);
            db.AddParam("@GENERO", SqlDbType.VarChar, admin.Genero);
            db.AddParam("@ESTADO_CIVIL", SqlDbType.VarChar, admin.EstadoCivil);
            db.AddParam("@NUMERO_ISS", SqlDbType.VarChar, admin.NumeroISS);
            db.AddParam("@NUMERO_PIS", SqlDbType.VarChar, admin.NumeroPIS);
            db.AddParam("@REGISTRO_PROFISSIONAL", SqlDbType.VarChar, admin.RegistroProf);
            db.AddParam("@EMAIL", SqlDbType.VarChar, admin.Email);
            db.AddParam("@DDD_TELEFONE", SqlDbType.VarChar, admin.DddTel);
            db.AddParam("@TELEFONE", SqlDbType.VarChar, admin.Telefone);
            db.AddParam("@DDD_CELULAR", SqlDbType.VarChar, admin.DddCel);
            db.AddParam("@CELULAR", SqlDbType.VarChar, admin.Celular);
            db.AddParam("@PAI", SqlDbType.VarChar, admin.Pai);
            db.AddParam("@MAE", SqlDbType.VarChar, admin.Mae);
            db.AddParam("@CEP", SqlDbType.VarChar, admin.Cep);
            db.AddParam("@ENDERECO", SqlDbType.VarChar, admin.Endereco);
            db.AddParam("@NUMERO", SqlDbType.Int, admin.Numero);
            db.AddParam("@COMPLEMNETO", SqlDbType.VarChar, admin.Complemento);
            db.AddParam("@BAIRRO", SqlDbType.VarChar, admin.Bairro);
            db.AddParam("@UF_ENDERECO", SqlDbType.VarChar, admin.UfEndereco);
            db.AddParam("@CIDADE", SqlDbType.VarChar, admin.Cidade);
            db.AddParam("@ID_BANCO", SqlDbType.Int, admin.CodBanco);
            db.AddParam("@AGENCIA", SqlDbType.VarChar, admin.Agencia);
            db.AddParam("@CONTA", SqlDbType.VarChar, admin.Conta);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, admin.Situacao);
            //return db.ExecuteNonQuery();

            bool inseriu = db.ExecuteNonQuery();

            if (inseriu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'INSERT',
                        'TB_ADMINISTRADOR',
                        ((SELECT CAST(MAX(ID_ADMINISTRADOR) AS VARCHAR) FROM TB_ADMINISTRADOR)
                        + ' | ' + UPPER(@NOME)
                        + ' | ' + UPPER(@CPF)
                        + ' | ' + UPPER(@RG)
                        + ' | ' + UPPER(@ORGAO_EXPEDIDOR_RG)
                        + ' | ' + UPPER(@UF_RG)
                        + ' | ' + CONVERT(VARCHAR(10), @DATA_EXPEDICAO_RG, 103)
                        + ' | ' + UPPER(@EMAIL)
                        + ' | ' + UPPER(@BANCO)
                        + ' | ' + UPPER(@AGENCIA)
                        + ' | ' + UPPER(@CONTA)
                        + ' | ' + UPPER(@SITUACAO)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@NOME", SqlDbType.VarChar, admin.Nome);
                db.AddParam("@CPF", SqlDbType.VarChar, admin.Cpf);
                db.AddParam("@RG", SqlDbType.VarChar, admin.Rg);
                db.AddParam("@ORGAO_EXPEDIDOR_RG", SqlDbType.VarChar, admin.OrgaoExpedidor);
                db.AddParam("@UF_RG", SqlDbType.VarChar, admin.UfRG);
                db.AddParam("@DATA_EXPEDICAO_RG", SqlDbType.DateTime, admin.DataExpedicao);
                db.AddParam("@EMAIL", SqlDbType.VarChar, admin.Email);
                db.AddParam("@BANCO", SqlDbType.Int, admin.CodBanco);
                db.AddParam("@AGENCIA", SqlDbType.VarChar, admin.Agencia);
                db.AddParam("@CONTA", SqlDbType.VarChar, admin.Conta);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, admin.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return inseriu;
        }
        #endregion

        #region Alterar Administrador
        public bool alterarAdministrador(Administrador admin, string usuario)
        {
            #region Script
            string SQL = @"UPDATE TB_ADMINISTRADOR
                            SET   
                                   NOME                   = @NOME,
                                   CPF                    = @CPF,
                                   RG                     = @RG,
                                   ORGAO_EXPEDIDOR_RG     = @ORGAO_EXPEDIDOR_RG,
                                   UF_RG                  = @UF_RG,
                                   DATA_EXPEDICAO_RG      = @DATA_EXPEDICAO_RG,
                                   NACIONALIDADE          = @NACIONALIDADE,
                                   NATURALIDADE           = @NATURALIDADE,
                                   UF_NATURALIDADE        = @UF_NATURALIDADE,
                                   GENERO                 = @GENERO,
                                   ESTADO_CIVIL           = @ESTADO_CIVIL,
                                   NUMERO_ISS             = @NUMERO_ISS,
                                   NUMERO_PIS             = @NUMERO_PIS,
                                   REGISTRO_PROFISSIONAL  = @REGISTRO_PROFISSIONAL,
                                   EMAIL                  = @EMAIL,
                                   DDD_TELEFONE           = @DDD_TELEFONE,
                                   TELEFONE               = @TELEFONE,
                                   DDD_CELULAR            = @DDD_CELULAR,
                                   CELULAR                = @CELULAR,
                                   PAI                    = @PAI,
                                   MAE                    = @MAE,
                                   CEP                    = @CEP,
                                   ENDERECO               = @ENDERECO,
                                   NUMERO                 = @NUMERO,
                                   COMPLEMNETO            = @COMPLEMNETO,
                                   BAIRRO                 = @BAIRRO,
                                   UF_ENDERECO            = @UF_ENDERECO,
                                   CIDADE                 = @CIDADE,
                                   ID_BANCO               = @ID_BANCO,
                                   AGENCIA                = @AGENCIA,
                                   CONTA                  = @CONTA,
                                   SITUACAO               = @SITUACAO
                            WHERE  ID_ADMINISTRADOR       = @ID_ADMINISTRADOR";
            #endregion
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, admin.Codigo);
            db.AddParam("@NOME", SqlDbType.VarChar, admin.Nome);
            db.AddParam("@CPF", SqlDbType.VarChar, admin.Cpf);
            db.AddParam("@RG", SqlDbType.VarChar, admin.Rg);
            db.AddParam("@ORGAO_EXPEDIDOR_RG", SqlDbType.VarChar, admin.OrgaoExpedidor);
            db.AddParam("@UF_RG", SqlDbType.VarChar, admin.UfRG);
            db.AddParam("@DATA_EXPEDICAO_RG", SqlDbType.DateTime, admin.DataExpedicao);
            db.AddParam("@NACIONALIDADE", SqlDbType.VarChar, admin.Nacionalidade);
            db.AddParam("@NATURALIDADE", SqlDbType.VarChar, admin.Naturalidade);
            db.AddParam("@UF_NATURALIDADE", SqlDbType.VarChar, admin.UfNaturalidade);
            db.AddParam("@GENERO", SqlDbType.VarChar, admin.Genero);
            db.AddParam("@ESTADO_CIVIL", SqlDbType.VarChar, admin.EstadoCivil);
            db.AddParam("@NUMERO_ISS", SqlDbType.VarChar, admin.NumeroISS);
            db.AddParam("@NUMERO_PIS", SqlDbType.VarChar, admin.NumeroPIS);
            db.AddParam("@REGISTRO_PROFISSIONAL", SqlDbType.VarChar, admin.RegistroProf);
            db.AddParam("@EMAIL", SqlDbType.VarChar, admin.Email);
            db.AddParam("@DDD_TELEFONE", SqlDbType.VarChar, admin.DddTel);
            db.AddParam("@TELEFONE", SqlDbType.VarChar, admin.Telefone);
            db.AddParam("@DDD_CELULAR", SqlDbType.VarChar, admin.DddCel);
            db.AddParam("@CELULAR", SqlDbType.VarChar, admin.Celular);
            db.AddParam("@PAI", SqlDbType.VarChar, admin.Pai);
            db.AddParam("@MAE", SqlDbType.VarChar, admin.Mae);
            db.AddParam("@CEP", SqlDbType.VarChar, admin.Cep);
            db.AddParam("@ENDERECO", SqlDbType.VarChar, admin.Endereco);
            db.AddParam("@NUMERO", SqlDbType.Int, admin.Numero);
            db.AddParam("@COMPLEMNETO", SqlDbType.VarChar, admin.Complemento);
            db.AddParam("@BAIRRO", SqlDbType.VarChar, admin.Bairro);
            db.AddParam("@UF_ENDERECO", SqlDbType.VarChar, admin.UfEndereco);
            db.AddParam("@CIDADE", SqlDbType.VarChar, admin.Cidade);
            db.AddParam("@ID_BANCO", SqlDbType.Int, admin.CodBanco);
            db.AddParam("@AGENCIA", SqlDbType.VarChar, admin.Agencia);
            db.AddParam("@CONTA", SqlDbType.VarChar, admin.Conta);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, admin.Situacao);
            //return db.ExecuteNonQuery();

            bool atualizou = db.ExecuteNonQuery();

            if (atualizou)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'UPDATE',
                        'TB_ADMINISTRADOR',
                        (SELECT CAST(@ID_ADMINISTRADOR AS VARCHAR) 
                        + ' | ' + UPPER(@NOME)
                        + ' | ' + UPPER(@CPF)
                        + ' | ' + UPPER(@RG)
                        + ' | ' + UPPER(@ORGAO_EXPEDIDOR_RG)
                        + ' | ' + UPPER(@UF_RG)
                        + ' | ' + CONVERT(VARCHAR(10), @DATA_EXPEDICAO_RG, 103)
                        + ' | ' + UPPER(@EMAIL)
                        + ' | ' + UPPER(@BANCO)
                        + ' | ' + UPPER(@AGENCIA)
                        + ' | ' + UPPER(@CONTA)
                        + ' | ' + UPPER(@SITUACAO)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, admin.Codigo);
                db.AddParam("@NOME", SqlDbType.VarChar, admin.Nome);
                db.AddParam("@CPF", SqlDbType.VarChar, admin.Cpf);
                db.AddParam("@RG", SqlDbType.VarChar, admin.Rg);
                db.AddParam("@ORGAO_EXPEDIDOR_RG", SqlDbType.VarChar, admin.OrgaoExpedidor);
                db.AddParam("@UF_RG", SqlDbType.VarChar, admin.UfRG);
                db.AddParam("@DATA_EXPEDICAO_RG", SqlDbType.DateTime, admin.DataExpedicao);
                db.AddParam("@EMAIL", SqlDbType.VarChar, admin.Email);
                db.AddParam("@BANCO", SqlDbType.Int, admin.CodBanco);
                db.AddParam("@AGENCIA", SqlDbType.VarChar, admin.Agencia);
                db.AddParam("@CONTA", SqlDbType.VarChar, admin.Conta);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, admin.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return atualizou;
        }
        #endregion

        #region Excluir Administrador
        public bool excluirAdministrador(Administrador admin, string usuario)
        {
            string SQL = @"DELETE TB_ADMINISTRADOR
                                WHERE  ID_ADMINISTRADOR = @ID_ADMINISTRADOR";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, admin.Codigo);
            //return db.ExecuteNonQuery();

            bool excluiu = db.ExecuteNonQuery();

            if (excluiu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'DELETE',
                        'TB_ADMINISTRADOR',
                        (SELECT CAST(@ID_ADMINISTRADOR AS VARCHAR) 
                        + ' | ' + UPPER(@NOME)
                        + ' | ' + UPPER(@CPF)
                        + ' | ' + UPPER(@RG)
                        + ' | ' + UPPER(@ORGAO_EXPEDIDOR_RG)
                        + ' | ' + UPPER(@UF_RG)
                        + ' | ' + CONVERT(VARCHAR(10), @DATA_EXPEDICAO_RG, 103)
                        + ' | ' + UPPER(@EMAIL)
                        + ' | ' + UPPER(@BANCO)
                        + ' | ' + UPPER(@AGENCIA)
                        + ' | ' + UPPER(@CONTA)
                        + ' | ' + UPPER(@SITUACAO)),                       
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, admin.Codigo);
                db.AddParam("@NOME", SqlDbType.VarChar, admin.Nome);
                db.AddParam("@CPF", SqlDbType.VarChar, admin.Cpf);
                db.AddParam("@RG", SqlDbType.VarChar, admin.Rg);
                db.AddParam("@ORGAO_EXPEDIDOR_RG", SqlDbType.VarChar, admin.OrgaoExpedidor);
                db.AddParam("@UF_RG", SqlDbType.VarChar, admin.UfRG);
                db.AddParam("@DATA_EXPEDICAO_RG", SqlDbType.DateTime, admin.DataExpedicao);
                db.AddParam("@EMAIL", SqlDbType.VarChar, admin.Email);
                db.AddParam("@BANCO", SqlDbType.Int, admin.CodBanco);
                db.AddParam("@AGENCIA", SqlDbType.VarChar, admin.Agencia);
                db.AddParam("@CONTA", SqlDbType.VarChar, admin.Conta);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, admin.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return excluiu;
        }
        #endregion

        #region Carregar Dados Administrador
        public Administrador carregarDadosAdministrador(int pCodAdmin)
        {
            string SQL = @"SELECT ta.ID_ADMINISTRADOR,
                                   ta.NOME,
                                   ta.CPF,
                                   ta.RG,
                                   ta.ORGAO_EXPEDIDOR_RG,
                                   ta.UF_RG,
                                   ta.DATA_EXPEDICAO_RG,
                                   ta.NACIONALIDADE,
                                   ta.NATURALIDADE,
                                   ta.UF_NATURALIDADE,
                                   ta.GENERO,
                                   ta.ESTADO_CIVIL,
                                   ta.NUMERO_ISS,
                                   ta.NUMERO_PIS,
                                   ta.REGISTRO_PROFISSIONAL,
                                   ta.EMAIL,
                                   ta.DDD_TELEFONE,
                                   ta.TELEFONE,
                                   ta.DDD_CELULAR,
                                   ta.CELULAR,
                                   ta.PAI,
                                   ta.MAE,
                                   ta.CEP,
                                   ta.ENDERECO,
                                   ta.NUMERO,
                                   ta.COMPLEMNETO,
                                   ta.BAIRRO,
                                   ta.UF_ENDERECO,
                                   ta.CIDADE,
                                   ta.ID_BANCO,
                                   ta.AGENCIA,
                                   ta.CONTA,
                                   ta.SITUACAO
                            FROM   TB_ADMINISTRADOR ta
                            WHERE ta.ID_ADMINISTRADOR = @ID_ADMINISTRADOR";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, pCodAdmin);
            try
            {
                db.AbrirConexao();
                SqlDataReader dr = db.ExecuteReader();
                Administrador admin = new Administrador();
                if (dr.Read())
                {
                    admin.Codigo = pCodAdmin;
                    admin.Nome = dr["NOME"].ToString();
                    admin.Cpf = dr["CPF"].ToString();
                    admin.Rg = dr["RG"].ToString();
                    admin.OrgaoExpedidor = dr["ORGAO_EXPEDIDOR_RG"].ToString();
                    admin.UfRG = dr["UF_RG"].ToString();
                    admin.DataExpedicao = Convert.ToDateTime(dr["DATA_EXPEDICAO_RG"].ToString());
                    admin.Nacionalidade = dr["NACIONALIDADE"].ToString();
                    admin.Naturalidade = dr["NATURALIDADE"].ToString();
                    admin.UfNaturalidade = dr["UF_NATURALIDADE"].ToString();
                    admin.Genero = dr["GENERO"].ToString();
                    admin.EstadoCivil = dr["ESTADO_CIVIL"].ToString();
                    admin.NumeroISS = dr["NUMERO_ISS"].ToString();
                    admin.NumeroPIS = dr["NUMERO_PIS"].ToString();
                    admin.RegistroProf = dr["REGISTRO_PROFISSIONAL"].ToString();
                    admin.Email = dr["EMAIL"].ToString();
                    admin.DddTel = dr["DDD_TELEFONE"].ToString();
                    admin.Telefone = dr["TELEFONE"].ToString();
                    admin.DddCel = dr["DDD_CELULAR"].ToString();
                    admin.Celular = dr["CELULAR"].ToString();
                    admin.Pai = dr["PAI"].ToString();
                    admin.Mae = dr["MAE"].ToString();
                    admin.Cep = dr["CEP"].ToString();
                    admin.Endereco = dr["ENDERECO"].ToString();
                    admin.Numero = Convert.ToInt32(dr["NUMERO"].ToString());
                    admin.Complemento = dr["COMPLEMNETO"].ToString();
                    admin.Bairro = dr["BAIRRO"].ToString();
                    admin.UfEndereco = dr["UF_ENDERECO"].ToString();
                    admin.Cidade = dr["CIDADE"].ToString();
                    admin.CodBanco = Convert.ToInt32(dr["ID_BANCO"].ToString());
                    admin.Agencia = dr["AGENCIA"].ToString();
                    admin.Conta = dr["CONTA"].ToString();
                    admin.Situacao = dr["SITUACAO"].ToString();
                }
                db.FecharConexao();
                return admin;
            }
            catch
            {
                return null;
            }
        }
        #endregion

        #region Verifica Administrador já cadastrado
        public bool verificarAdminJaCadastrado(string pCPF)
        {
            string SQL = @"SELECT ta.ID_ADMINISTRADOR
                            FROM   TB_ADMINISTRADOR ta
                            WHERE  ta.CPF = @CPF";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@CPF", SqlDbType.VarChar, pCPF);
            return db.GetDataTable().Rows.Count > 0;
        }
        #endregion

        #region Get Titulações
        public DataTable getTitulacoes(int idAdministrador)
        {
            string SQL = @"SELECT  tat.ID_ADMINISTRADOR_TITULACAO,
                                   tat.ID_ADMINISTRADOR,
                                   tnt.DESCRICAO            AS NIVEL,
                                   tat.DESCRICAO_TITULACAO  AS TITULO,
                                   tat.ANO_CONCLUSAO,
                                   tat.INSTITUICAO,
                                   tat.SITUACAO
                            FROM   TB_ADMINISTRADOR_TITULACAO tat
                                   JOIN TB_NIVEL_TITULACAO tnt
                                        ON  tnt.ID_NIVEL_TITULACAO = tat.ID_NIVEL_TITULACAO
                            WHERE  tat.ID_ADMINISTRADOR = @ID_ADMINISTRADOR";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, idAdministrador);
            return db.GetDataTable();
        }
        #endregion

        #region Incluir Titulação
        public bool incluirTitulacao(Titulacao titulacao)
        {
            string SQL = @"INSERT INTO TB_ADMINISTRADOR_TITULACAO
                                  (
                                    ID_ADMINISTRADOR,
                                    ID_NIVEL_TITULACAO,
                                    DESCRICAO_TITULACAO,
                                    ANO_CONCLUSAO,
                                    INSTITUICAO,
                                    SITUACAO,
                                    DATA_CADASTRO
                                  )
                                VALUES
                                  (
                                    @ID_ADMINISTRADOR,
                                    @ID_NIVEL_TITULACAO,
                                    @DESCRICAO_TITULACAO,
                                    @ANO_CONCLUSAO,
                                    @INSTITUICAO,
                                    @SITUACAO,
                                    GETDATE()
                                  )";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, titulacao.CodAdministrador);
            db.AddParam("@ID_NIVEL_TITULACAO", SqlDbType.Int, titulacao.CodNivelTitulacao);
            db.AddParam("@DESCRICAO_TITULACAO", SqlDbType.VarChar, titulacao.Titulo);
            db.AddParam("@ANO_CONCLUSAO", SqlDbType.Int, titulacao.AnoConclusao);
            db.AddParam("@INSTITUICAO", SqlDbType.VarChar, titulacao.Instituicao);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, titulacao.Situacao);
            return db.ExecuteNonQuery();
        }
        #endregion

        #region Alterar Titulação
        public bool alterarTitulacao(Titulacao titulacao)
        {
            string SQL = @"UPDATE TB_ADMINISTRADOR_TITULACAO
                            SET    ID_NIVEL_TITULACAO         = @ID_NIVEL_TITULACAO,
                                   DESCRICAO_TITULACAO        = @DESCRICAO_TITULACAO,
                                   ANO_CONCLUSAO              = @ANO_CONCLUSAO,
                                   INSTITUICAO                = @INSTITUICAO,
                                   SITUACAO                   = @SITUACAO
                            WHERE  ID_ADMINISTRADOR_TITULACAO  = @ID_ADMINISTRADOR_TITULACAO";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR_TITULACAO", SqlDbType.Int, titulacao.Codigo);
            db.AddParam("@ID_NIVEL_TITULACAO", SqlDbType.Int, titulacao.CodNivelTitulacao);
            db.AddParam("@DESCRICAO_TITULACAO", SqlDbType.VarChar, titulacao.Titulo);
            db.AddParam("@ANO_CONCLUSAO", SqlDbType.Int, titulacao.AnoConclusao);
            db.AddParam("@INSTITUICAO", SqlDbType.VarChar, titulacao.Instituicao);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, titulacao.Situacao);
            return db.ExecuteNonQuery();
        }
        #endregion

        #region Get Dados Titulação
        public Titulacao getDadosTitulacao(int idAdministradorTitulacao)
        {
            string SQL = @"SELECT   tat.ID_ADMINISTRADOR_TITULACAO,
                                    tat.ID_ADMINISTRADOR,
                                    tat.ID_NIVEL_TITULACAO,
                                    tat.DESCRICAO_TITULACAO,
                                    tat.ANO_CONCLUSAO,
                                    tat.INSTITUICAO,
                                    tat.SITUACAO
                            FROM   TB_ADMINISTRADOR_TITULACAO tat
                            WHERE  tat.ID_ADMINISTRADOR_TITULACAO = @ID_ADMINISTRADOR_TITULACAO";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR_TITULACAO", SqlDbType.Int, idAdministradorTitulacao);
            try
            {
                db.AbrirConexao();
                SqlDataReader dr = db.ExecuteReader();
                Titulacao titulacao = new Titulacao();
                if (dr.Read())
                {
                    titulacao.Codigo = Convert.ToInt32(dr["ID_ADMINISTRADOR_TITULACAO"]);
                    titulacao.AnoConclusao = Convert.ToInt32(dr["ANO_CONCLUSAO"]);
                    titulacao.CodNivelTitulacao = Convert.ToInt32(dr["ID_NIVEL_TITULACAO"]);
                    titulacao.CodAdministrador = Convert.ToInt32(dr["ID_ADMINISTRADOR"]);
                    titulacao.Instituicao = dr["INSTITUICAO"].ToString();
                    titulacao.Situacao = dr["SITUACAO"].ToString();
                    titulacao.Titulo = dr["DESCRICAO_TITULACAO"].ToString();
                }
                return titulacao;
            }
            catch
            {
                return null;
            }
            finally
            {
                db.FecharConexao();
            }
        }
        #endregion

        #region Excluir Titulação
        public bool excluirTitulacao(int idAdministradorTitulacao)
        {
            string SQL = @"DELETE 
                            FROM   TB_ADMINISTRADOR_TITULACAO
                            WHERE  ID_ADMINISTRADOR_TITULACAO = @ID_ADMINISTRADOR_TITULACAO";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR_TITULACAO", SqlDbType.Int, idAdministradorTitulacao);
            return db.ExecuteNonQuery();
        }
        #endregion
    }
}
